var xmlhttp = new getXMLObject(); 

function getXMLObject()  //XML OBJECT
{
   var xmlHttp = false;
   try {
     xmlHttp = new ActiveXObject("Msxml2.XMLHTTP")  // Pour les anciens navigateurs de Microsoft
   }
   catch (e) {
     try {
       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")  // Pour Microsoft IE 6.0+
     }
     catch (e2) {
       xmlHttp = false   
     }
   }
   if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
     xmlHttp = new XMLHttpRequest();        // Navigateurs Mozilla et Opera 
   }
   return xmlHttp;
}
 
/**
 * Fonction servant à aller chercher les résultats de la recherche de
 * destinataires selon le texte qui est passé en paramètre.
 */
function lireMessageInterne(idCompte, idMessage){
  if(xmlhttp) { 
    xmlhttp.open("POST","LireMessageInterne",false); 
    xmlhttp.onreadystatechange  = verifierErreurAJAX;
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send("idCompte=" + idCompte + "&idMessage=" + idMessage);
  }
}

/**
 * Fonction servant à modifier la variable de session pour le fond d'écran
 */
function changerFondEcran(idBackground){
  if(xmlhttp) { 
    xmlhttp.open("POST","ChangerFondEcran",false); 
    xmlhttp.onreadystatechange  = verifierErreurAJAX;
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send("idBackground=" + idBackground);
  }
}
 
function verifierErreurAJAX() {
   if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
     }
     else {
        alert("Error " + xmlhttp.status + "during AJAX call. Please try again");
     }
   }
}

/**
 * Fonction servant à aller chercher les résultats de la recherche de
 * destinataires selon le texte qui est passé en paramètre.
 */
function chercherUsager(nom, statut){
  if(xmlhttp) { 
    xmlhttp.open("POST","RechercheUsagers",false); 
    xmlhttp.onreadystatechange  = afficherUsager;
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send("nom=" + nom + "&statut=" + statut);
  }
}
 
function afficherUsager() {
   if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
         var reponse=xmlhttp.responseText;
         $('#resultatsRecherche').children().remove();
         if(reponse.replace(/ /, '').replace(/\r/, '').replace(/\n/, '') == ''){reponse = new Array();}
         else{reponse = reponse.split(';');}
         // S'il n'y a pas de résultat ou qu'il y en a plus que 30, on l'affiche
         if(reponse.length == 0){$('#resultatsRecherche').append('<li>***Aucun résultats***</li>');}
         else if(reponse.length > 30){$('#resultatsRecherche').append('<li>             ***Affichage limité à 30 résultats***</li>');}

         for(var i=0; i<reponse.length && i<30; i++){
             var temp = reponse[i].split('|');
             $('#resultatsRecherche').append('<li id="res_' + temp[0] + 
                 '" class="pointer">' + temp[2] + temp[1] + '</li>');
         }
         
         //Fonction pour ajouter un destinataire à la sélection
         $('#resultatsRecherche li').click(function(){
             var choisi = false;
             var temp = $(this).attr('id').split('_');
             var idCompte = temp.pop();
             // On vérifie si l'usager n'a pas déjà été choisi
             $('#choixRecherche li').each(function(){
                 if($(this).children('input').attr('id') == ('choix' + idCompte)){choisi = true;}
             }); 

             //S'il n'a pas été choisi, on l'ajoute à la sélection
             if(!choisi){
                 $('#choixRecherche').append('<li class="pointer" >' + '<input type="hidden" id="choix' + idCompte + '" name="choix_' + idCompte + '" value="' + idCompte + '">' + $(this).html() + '</li>');
                 //Fonction pour retirer un destinataire de la sélection
                 $('#choixRecherche li').click(function(){
                     $(this).remove();
                 });
             }
         });
     }
     else {
        alert("Error " + xmlhttp.status + "during AJAX call. Please try again");
     }
   }
}

/**
 * Fonction servant à aller chercher les résultats de la recherche de cours
 * selon le texte qui est passé en paramètre.
 */
function chercherCours(nom, domaine){
  if(xmlhttp) { 
    xmlhttp.open("POST","RechercheCours",false); 
    xmlhttp.onreadystatechange  = afficherCoursTrouves;
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send("nom=" + nom + "&domaine=" + domaine);
  }
}
 
function afficherCoursTrouves() {
   if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
         var reponse=xmlhttp.responseText;
         $('#resultatsRecherche').children().remove();
         if(reponse.replace(/ /, '').replace(/\r/, '').replace(/\n/, '') == ''){reponse = new Array();}
         else{reponse = reponse.split(';');}
         // S'il n'y a pas de résultat ou qu'il y en a plus que 30, on l'affiche
         if(reponse.length == 0){$('#resultatsRecherche').append('<li>***Aucun résultats***</li>');}
         else if(reponse.length > 30){$('#resultatsRecherche').append('<li>             ***Affichage limité à 30 résultats***</li>');}

         for(var i=0; i<reponse.length && i<30; i++){
             var temp = reponse[i].split('|');
             $('#resultatsRecherche').append('<li id="res_' + temp[0] + 
                 '" class="pointer">' + temp[1] + '</li>');
         }
         //Fonction pour ajouter un destinataire à la sélection
         $('#resultatsRecherche li').click(function(){
             var choisi = false;
             var temp = $(this).attr('id').split('_');
             var idCours = temp.pop();
             // On vérifie si l'usager n'a pas déjà été choisi
             $('#choixRecherche li').each(function(){
                 if($(this).children('input').val() == idCours){choisi = true;}
             }); 
             //S'il n'a pas été choisi, on l'ajoute à la sélection
             if(!choisi){
                 $('#choixRecherche').append('<li class="pointer">' + '<input type="hidden" id="choix' + idCours + '" name="choix_' + idCours + '" value="' + idCours + '">' + $(this).html() + '</li>');
                 //Fonction pour retirer un destinataire de la sélection
                 $('#choixRecherche li').click(function(){
                     $(this).remove();
                 });
             }
         });
     }
     else {
        alert("Error " + xmlhttp.status + "during AJAX call. Please try again");
     }
   }
}

/**
 * Fonction pour vérifier si le nom d'usager est déjà utilisé par un autre
 * compte. 
 */
function validerUsername(critere){
  if(xmlhttp) { 
    xmlhttp.open("POST","ValiderUsername",false); 
    xmlhttp.onreadystatechange  = retourValidationUsername;
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send("critere=" + critere);
  }
}

function retourValidationUsername() {
   var existe = false;
   if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
         var reponse=xmlhttp.responseText;
         reponse = reponse.replace(/ /, '').replace(/\n/, '').replace(/\r/, '');
         if(reponse == 'existe'){existe = true;}
         if(existe){
            $('#nouveauUsername').addClass('invalide');
            $('#errUsername').show();
         }else{
             $('#nouveauUsername').removeClass('invalide');
             $('#errUsername').hide();
         }
         var vide = false;
         $('.infoNouveau').each(function(){
              if($(this).val().replace(/ /, '') == ''){vide = true;}
         });
         if(vide){$('#errNouvVide').show();}
             else{$('#errNouvVide').hide();}
     }
     else {
        alert("Error " + xmlhttp.status + "during AJAX call. Please try again");
     }
   }
}

/**
 * Fonction pour remplir une liste select des professeurs pour le domaine d'étude
 * choisi. 
 * @param0: domaine: domaine d'étude
 * @param1: elemDOM: élément DOM de la liste select
 * @param2: choix: professeur choisi 
 * @param2: elemID: id de l'élément pour le choix du professeur
 */
function chercherProfesseurs(domaine, elemDOM, choix, elemID){
  if(xmlhttp) { 
    xmlhttp.open("POST","ChercherProfesseur",false); 
    xmlhttp.onreadystatechange  = retourProfesseurs;
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send("domaine=" + domaine + "&elemDOM=" + elemDOM + "&choix=" + choix
                 + "&elemID=" + elemID);
  }
}

function retourProfesseurs() {
   if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
         var noChoix = false;
         var choix   = "";   // variable pour le professeur choisi
         var elemDOM = ""; // variable pour l'élément DOM à modifier
         var elemID  = "";  // variable pour l'élément contenant le username du professeur choisi
         var choisi  = "";
         
         var reponse=xmlhttp.responseText;
         if(reponse.replace(/ /, '').replace(/\r/, '').replace(/\n/, '') == ''){reponse = new Array();}
         else{reponse = reponse.split('|');}
         
         if(reponse.length != 0){
             elemID = reponse.pop();
             choix = reponse.pop();
             elemDOM = reponse.pop();
             $(elemDOM).children().remove();
         }
         // On passe à travers les professeurs retournés pour les ajouter à l'élément DOM
         for(var i=0; i<reponse.length; i++){
             var temp   = reponse[i].split(';');
             if(temp[1] == choix){
                 choisi = "selected";
                 $(elemID).val(temp[0]);
             } else if (choix == '' && !noChoix){
                 $(elemID).val(temp[0]);
                 noChoix=true;
             }
             
             $(elemDOM).append('<option value="' + temp[0] + 
                 '" ' + choisi + '>' + temp[1] + '</option>');
         }
     }
     else {
        alert("Error " + xmlhttp.status + "during AJAX call. Please try again");
     }
   }
}